home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / languages / cleo.lzh / Cleo / include / GLOBALS.H < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-24  |  7.4 KB  |  169 lines

  1. /***************************************************************************
  2. *   Ce fichier, ainsi que tous les  modules  l'accompagnant, peut et  doit *
  3. * etre  copié GRATUITEMENT à la seule condition expresse de conserver      *
  4. * l'INTEGRALITE  du  Code Source, de  la documentation, et  des fichiers   *
  5. * annexes du package. Ce logiciel est Shareware, veuilez envoyer 100 FF à  *
  6. * l'auteur pour recevoir regulièrement les nouvelles versions.             *
  7. * Toute modification est INTERDITE sans l'autorisation écrite de l'auteur. *
  8. *            Tous droits réservés à M. DIALLO Barrou, Juillet 1992.        *
  9. ***************************************************************************/
  10.  
  11. FCTLIB *extfct=NULL, *curextfct=NULL, *curlibfct=NULL;  /* liste des fonctions externes */
  12.        /* debut de liste   fin de liste    fct en cours d'analyse */
  13.         /************* Globals de Cleobis ************************/
  14.  
  15. Entete head=  { "Cleobis", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0,0, 0, 0, 0L };
  16.                         /* Declaration de l'entete courante    */
  17. long *buf_entier;       /* Declaration du buffer des 'Entier'  */
  18. double *buf_reel;       /* Declaration du buffer des 'Reel'    */
  19. char *buf_chr;          /*                       des 'Chr'     */
  20. char **buf_chaine;      /* Declaration du buffer des chaines */
  21.  
  22. BOOL dismode=FALSE;
  23. int NbAdr  =0;                          /*** Nbre d'adresses  ***/
  24. int NbSym =0;                           /*** Nbre de symbols ***/
  25. int NbConst=0;                          /*** Nbre de constante ***/
  26. int NbVar=0;                                                                     /*** Nbre de variable ***/
  27.  
  28. MY_TYPESID lasttokentype;       /* type de l'avant dernier token */
  29. MY_TYPESID curtokentype;        /*** type du token courant ***/
  30. MY_TYPESID facttype;            /* Type du token courant dans Facteur() */
  31. MY_CONST curconst;              /** Valeur de la constante courante */
  32. char curtoken[MAXSTRING];       /* Ligne courante de traitement */
  33. int curtokenid;                 /** Id du token courant **/
  34. int lasttokenid;                        /* Id de l'avant dernier token */
  35.  
  36. CONST *symb=NULL, *cursymb=NULL;    /** Liste de SYMBOLS **/
  37. VAR *var=NULL, *curvar=NULL;                     /** Liste de VARIABLES **/
  38.  
  39. PROG *prg=NULL;         /*** Debut du prg code ***/
  40. PROG *curprg=NULL;              /** cpt courant de prog **/
  41.  
  42. long AdressSize=5000;       /*** Taille Tableau d'adresses ***/
  43. int *Adress=NULL;          /***          "  "    "     "  ***/
  44. int curadr=0;                   /** Adr courante **/
  45. int pcpc =0;                                    /** Compteur d'adresses **/
  46. long TextSize=0;
  47. int SymbolSize=MAXSTRING;   /* nombre de chr maxi dans un symbol */
  48. int ExecMode = RUNNING;
  49. char *ErrorFileName =   NULL;       char *TxtFileName = NULL;
  50. char *CodeFileName = NULL;
  51.  
  52. FILE *ErrorF=NULL, *TxtF=NULL, *CodeF=NULL;   /* Descripteur Fichiers erreur, txt, code */
  53. char *Txt=NULL;                               /* Adr du Buffer Source */
  54.  
  55. long lg=0;                      /* Compteur d'octet dans le source */
  56. int curlg=1, curcol=0;          /* No ligne & col  courantes */
  57. BOOL quote=FALSE;
  58. int Nbfct=0;            /* Nbre de fct & proc */
  59. int curfct=0;           /* Num de la fct courante */
  60. char *curc;      /** Chr courant */
  61. int debut=0;   /* Adress du debut du prg */
  62.                     /***** Operateurs mathématiques *********/
  63.  
  64. OPE Mathope[] = {  "+", plus_o,  "-", moins_o,
  65.                    "*", fois_o,  "/", divise_o, "%", mod_o,
  66.                    (char*)NULL,fin_o
  67.                 };
  68.  
  69. BOOLEEN Bool[] = {  "and", et_b,   "or", ou_b, "xor", ouex_b,
  70.                     "not", non_b,  "in", in_b, "mod", mod_o, "div", div_o,
  71.                     "xxx := xxx", affecte_b,
  72.                     (char*)NULL, fin_b
  73.                  };
  74.  
  75.                /******* Procedures & Types Standard Pascal ******/
  76.  
  77. MOT Reserved[] = {   "program", program_f, "if", if_f, "then", then_f,
  78.                      "else", else_f, "while", while_f, "do", do_f,
  79.                      "for", for_f, "repeat", repeat_f, "until", until_f,
  80.                      "begin", begin_f, "end", end_f, "var", var_f,
  81.                      "to", to_f, "downto", downto_f, "of", of_f, "function",function_f,
  82.                      "procedure", procedure_f, "goto", goto_f,
  83.                      (char*)NULL, fin_f
  84.                  };
  85.  
  86. MOT Type[] = {
  87.                 "real", real_t, "integer", integer_t, "string", string_t,
  88.                 "boolean", boolean_t, "char", char_t, "array", array_t,
  89.                 "longint", longint_t, "longreal", longreal_t,
  90.                 "point2d", point2d_t, "point3d", point3d_t, "rgb", rgb_t,
  91.                 (char*)NULL, fin_t
  92.               };
  93.  
  94. FIELDSTRUCT Field[] = {
  95.             point2d_t, "xy", point3d_t ,"xyz", rgb_t ,"rgb",
  96.             fin_t, (char*)NULL
  97.             };
  98.  
  99. MOT Fonctions[] = { "read", read_fio, "readln", readln_fio,
  100.                     "write", write_fio, "writeln", writeln_fio,
  101.                     "inclib",inclib_fio,
  102.                     (char*)NULL, fin_fio
  103.                   };
  104.  
  105. MOT Math[] =    { "abs", abs_m, "atan", atan_m, "acos", acos_m,
  106.                   "asin", asin_m, "cosh", cosh_m, "sinh", sinh_m,
  107.                   "cos", cos_m, "sin", sin_m, "exp", exp_m, "frac", frac_m,
  108.                   "trunc", int_m, "ln", ln_m, "sqr", sqr_m, "sqrt", sqrt_m,
  109.                   "odd", odd_m, "even", even_m, "pred", pred_m ,"succ", succ_m,
  110.                   "inv", inv_m, "rnd", rnd_m,"tanh", tanh_m, "tan", tan_m,
  111.                   (char*)NULL, fin_m
  112.                 };
  113.  
  114. Erreur Avertis[] = {
  115.         "Compilation sans fichier de configuration",0,
  116.         "Fichier Code par defaut",1,
  117.         (char *)NULL, 0
  118.         };
  119.  
  120. Erreur Erreurs[] = {
  121.     "Fichier Config de Compilation introuvable.",0,
  122.     "Mauvaise Syntaxe dans fichier Config",1,
  123.     "Mauvaise Syntaxe",2,
  124.     "Mauvais Type d'argument",3,
  125.     "Variable de configuration inconnue",4,
  126.     "Mode d'execution inconnu",5,
  127.     "Mauvais Arguments",6,
  128.     "Impossible d'ouvrir le fichier de Code",7,
  129.     "Impossible d'ouvrir le fichier Source",8,
  130.     "Pas assez de memoire pour le Code",9,
  131.     "Pas assez de memoire pour le Fichier Source",10,
  132.     "Pas assez de memoire pour la table des Symboles",11,
  133.     "Guillements non fermees",12,
  134.     "Constante Reelle incoherente",13,
  135.     "Fin de fichier Texte Prematuree",14,
  136.     "Pas assez de memoire pour la compilation",15,
  137.     "Constante Chaine trop longue", 16,
  138.     "Double symbole",17,
  139.     "Point inexistant",18,
  140.     "Point-virgule inexistant",19,
  141.     "PROGRAM inexistant",20,
  142.     "Identificateur inexistant",21,
  143.     "Operateur d'affectation ':=' inexistant",22,
  144.     "BEGIN inexistant", 23,
  145.     "END inexistant", 24,
  146.     "Parenthese ouvrante manquante", 25,
  147.     "Parenthese fermante manquante", 26,
  148.     "Separateur ':' manquant", 27,
  149.     "Declaration de variable sans type ou type inconnu", 28,
  150.     "Pas assez de place dans la table d'adresses",29,
  151.     "Variable ou Fonction non declaree", 30,
  152.     "DO inexistant", 31,
  153.     "Operateur Booleen inexistant", 32,
  154.     "THEN inexistant", 33,
  155.     "UNTIL inexistant", 34,
  156.     "PROCEDURE incomplète, parametres ou ';' inexistant", 35,
  157.     "Crochet ouvrant manquant",36,
  158.     "Crochet fermant manquant",37,
  159.     "Constante manquante",38,
  160.     "Separateur '..' attendu",39,
  161.     "OF inexistant", 40,
  162.     "Champs de structure non precise", 41,
  163.     "Champs de structure inconnu",42,
  164.     "Symbole '<' manquant",43,
  165.     "Symbole '>' manquant",44,
  166.     "Impossible d'ouverture la library",45,
  167.     "Nombre de parametres incorrect", 46,
  168.    (char *)NULL,0
  169.     };